MySQL借助Excel快速区间分段统计(客单价分布 IOS账单分月)

MySQL借助Excel快速区间分段统计(客单价分布 IOS账单分月)

八月 27, 2022 阅读量

本来这个是放在代码碎片系列里的(因为很少做开发了,从2020年初到现在才凑齐6个),当时因为按价格分段,奈何分段太多想出的“偷懒”方法,想单独写一篇文章,可惜篇幅不够。因为前一段时间受朋友之托,临危受命,帮忙做IOS的账单分月(当时并不清楚IOS的财年),刚开始以为没有规律可循,但是后来发现月份都是按照35,28,28天这样排列的,也就是都是7的倍数,觉得可以用之前的方法来实现。这里简单介绍下思路,具体操作根据数据来进行微调。

客单价分布

最初想的写法和“偷懒”后的想法:

因为这里区间是(0, 20],(20, 40]……思路就是按照需要统计的字段减去最小的单位数字,然后除以分段区间的公约数后向下取整。如图中字段为金额,减去最小数值0.01元,然后除以20后向下取整。如果金额为0,结果就是-1;如果金额为0.01到20,结果就是0;如果金额是20.01到40,结果就是1。
下图是Excel的写法,但是和上面的sql不对应,这是后来的了:

Excel的话,就是在MySQL的计算基础上加1,再乘以分段区间的公约数计算出所在区间。继续以上面的例子举例,结果-1的加1后乘以20,结果为0,不做统计;结果0的加1后乘以20,结果为20,区间(0, 20];结果2的加1后乘以20,结果为40,区间(20, 40]。通过Excel公式SUMIF来判断所处区间,除了开头和结尾的两个能直接判断外,中间的需要减去之前的数值。有异常数据的时候需要自己判断了,比如金额为负数的订单。
这里做了一个简单的例子,可以参考一下:

这里只是提供一个思路,调整区间只要公约数不变,只需要更改Excel区间条件就行了。

IOS账单分月

财年(Fiscal Year,财经年度,财政年度,会计财务年度,会计年度),是指公司或国家每年制定预算或计算收入的统计时间。财季是指某一季度的财务状况,财年是指某一完整四个财季的财务状况。但每个国家或其法例所辖的组织各有不同,大抵分成历年制(历年度制,是指财政年度的起止期与年历始末相同,即公历1月1日起至12月31日止)和跨年制(跨日历年度制,是指财政年度起止期与年历始末不相同)两类。
AppStore2020账单日历:

Apple财年由四个财季组成,每个季度分别为35天,28天,28天。苹果的财政年度从10月的财政年度开始,这意味着苹果的2020财年从2019年10月开始(包含9月),周天开始,周六结束,并为第一个季度。(深究的话,苹果财年只有364天,所以每5年必须在12账单月增加一周,这里不讨论)

比如我这里限定区间范围,通过YEARWEEK来区分周(默认周天为每周第一天)。

然后通过excel,分别以每5周,4周,4周进行公式填充。
这里只是提供一个思路,请以实际情况自行调整,单独通过MySQL不好实现的时候,可以借助下其他工具软件。